const mysql = require("mysql2");
const responseResult = require("../util/responseResult");
// 初始化数据库
const {DEBUG, MYSQL_HOST, MYSQL_PORT, MYSQL_DATABASE, MYSQL_USER_NAME, MYSQL_PASSWORD, NODE_ENV} = process.env;

// 创建连接池
const pool = mysql.createPool({
    host: MYSQL_HOST,
    port: MYSQL_PORT,
    database: MYSQL_DATABASE,
    user: MYSQL_USER_NAME,
    password: MYSQL_PASSWORD,
    waitForConnections: true,//如果连接池已用，等待连接可用
    connectionLimit: 10,//最大连接数
    queueLimit: 0,//不限制等待连接数
});
/**
 * 执行Sql封装
 * @param sql：执行的sql语句
 * @param cb：执行回调
 */
const connectSql = (sql, res, cb) => {
    // 对查询语句格式化 防止sql注入
    sql = mysql.format(sql);
    // 建立连接
    pool.getConnection((err, connection) => {
        if (err) {
            console.log("连接错误：" + err);
            return;
        }
        // 执行查询
        connection.query(sql, (err, results, fields) => {
            // 输出sql
            if (process.env.NODE_ENV === 'development' || process.env.NODE_ENV === 'test') {
                console.log(sql);
            }
            if (err) {
                return res.json(responseResult.error("sql Error：" + err))
            }
            cb(results, fields);
            // 释放连接
            connection.release();
        });
        // 是否立即关闭连接池.单个服务不需要
        // if (isClose) {
        //     connection.end();
        // }
    });

}

module.exports = connectSql;
